package com.example.pt.service;

import com.example.pt.dto.RecommendationFeedbackDTO;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 推荐反馈服务接口
 */
public interface RecommendationFeedbackService {
    
    /**
     * 添加用户反馈
     * @param userId 用户ID
     * @param feedbackDTO 反馈信息
     * @return 是否添加成功
     */
    boolean addFeedback(Integer userId, RecommendationFeedbackDTO feedbackDTO);
    
    /**
     * 获取用户的所有不感兴趣的种子ID
     * @param userId 用户ID
     * @return 不感兴趣的种子ID列表
     */
    List<Integer> getUserDislikedTorrentIds(Integer userId);
    
    /**
     * 获取用户对各类别的负反馈统计
     * @param userId 用户ID
     * @return 类别和负反馈次数的映射
     */
    Map<Integer, Integer> getUserCategoryDislikeStats(Integer userId);
    
    /**
     * 统计指定时间段内各种反馈类型的数量
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return 反馈类型和数量的映射
     */
    Map<Integer, Integer> countFeedbackTypesByTimeRange(Date startTime, Date endTime);
    
    /**
     * 检查用户是否已经对某个种子提交过特定类型的反馈
     * @param userId 用户ID
     * @param torrentId 种子ID
     * @param feedbackType 反馈类型
     * @return 是否已提交反馈
     */
    boolean checkUserFeedbackExists(Integer userId, Integer torrentId, Integer feedbackType);
    
    /**
     * 检查用户是否已经对某个种子提交过任何类型的反馈
     * @param userId 用户ID
     * @param torrentId 种子ID
     * @return 是否已提交反馈
     */
    boolean checkUserFeedbackExists(Integer userId, Integer torrentId);
} 